const {Service}=require("egg")

const axios =require("axios")
const fs=require("fs")
const {join}=require("path")

const {OAUTH_CLIENT_ID,OAUTH_CLIENT_SECRET,OAUTH_REDIRECT_URI}=require("../config/index")

class UserService extends Service{

    // 更新mysql 的数据
    async upload({id,imgUrl}){
        // 更新信息
        const sql=`update user_list set avatar=? where id=?`
        return await this.app.mysql.query(sql,[imgUrl,id])
    }

    // 上传文件
    async saveAvatar(filename,filepath){
        // 读取
        const fileData=fs.readFileSync(filepath)
        // 写入新的文件
        const newFilePath=join(process.cwd(),`/app/public/avatar/${filename}`)
        
        return new Promise((resolve, reject) => {
            // 异步写入
            fs.writeFile(newFilePath,fileData,(err)=>{
                if(err){
                    reject(new Error(err))
                }else{
                    const imgUrl=`http://localhost:7001/public/avatar/${filename}`
                    resolve(imgUrl)
                }
            })
        })
    }

    // 第三方登录
    async get_user_info(access_token){
        // 发起axios请求,获取用户信息
        const result=await axios.get("https://gitee.com/api/v5/user",{
            params:{
                access_token
            }
        })
        return result
    }

    async get_access_token(code){
        // 发送axios请求  "请求地址"
        const result=await axios.post("https://gitee.com/oauth/token",{
            grant_type:"authorization_code",
            code,
            client_id:OAUTH_CLIENT_ID,
            redirect_uri:OAUTH_REDIRECT_URI,
            client_secret:OAUTH_CLIENT_SECRET
        })
        return result
    }
}

module.exports=UserService